package zhan.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import zhan.dao.UserDao;
import zhan.entity.User;

import java.util.List;
import java.util.Map;

/**
 * 缓存机制说明：所有的查询结果都放到缓存中，也就是说把MySql查询结果放到redis中去，然后第二次发起该条记录查询就从redis中取找
 * redis的查询速度之于MySQL的查询速度相当于 内存读写速度 /硬盘读写速度。
 *
 * @Cacheable("a")注解的意义就是把该方法的查询结果放到redis中去， 存在redis中的数据的key就是a；
 * @CacheEvict(value={"a","b"},allEntries=true) 的意思就是执行该方法后要清除redis中key名称为a, b的数据；
 */
@Service("userService")
public class UserService {
    @Autowired
    private UserDao userDao;

   //@Cacheable
    public List<Map<String, Object>> getUser() {
        System.out.println("service");
        List<Map<String, Object>> maps = null;
        try {
            maps = userDao.getUser();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return maps;

    }

    /**
     * 根据id 查询用户
     * @param userId
     * @return
     */
    //@Cacheable("user")
    public User selectByPrimaryKey(int userId){

        return userDao.selectByPrimaryKey(userId);
    }

    /**
     * 根据用户名查询用户
     * @param name
     * @return
     */
    public User selectByName(String name){
        return userDao.selectUserByName(name);
    }
    /**
     * 查询所有用户
     * @return
     */
    public List<User> selectAllUser(){
        return userDao.selectAllUser();
    }

    /**
     * 插入一个用户
     * @param user
     */
    public void insertUser(User user){
        userDao.insertUser(user);
    }

    /**
     * 删除一个用户
     * @param id
     */
    public void deleteUser(int id){
        userDao.deleteUser(id);
    }

    /**
     * 模糊查询一个用户
     * @param keyWords
     * @return
     */

    public List<User> findUsers(String keyWords){
        return userDao.findUsers(keyWords);
    }

    /**
     * 编辑一个用户
     * @param user
     */
    public void editUser(User user){
        userDao.editUser(user);
    }


    /**
     * 保存一个用户
     */
    public void save(User user){
        userDao.save(user);
    }
}
